// 引入axios
import axios from "axios"

import { ElMessageBox } from 'element-plus'
// 引入router
import router from "@/router"

// 配置axios
let http =axios.create({
    // 基础地址
    baseURL:'/api',
    // 超时设置
    timeout:1000*10,
    // 是否携带凭据
    withCredentials:true
})

// 配置拦截器
 
// 请求拦截器
http.interceptors.request.use(config=>{
    // console.log(config)
    // 先获取token
    let token=sessionStorage.getItem("whc-token");
    config.headers.authorization = token
    return config
})

// 响应拦截器
http.interceptors.response.use(config=>{

    // console.log("config===",config)

    if(config.data.state){
        // 验证成功
        return config

    }else{

        // 不需要弹窗提示的路径
        let excludePaths = ['/sms/send'];

        // 如果excludePaths不包含当前的响应路径，那么不需要弹窗
        if(!excludePaths.includes(config.config.url)){
            // 响应了错误
        ElMessageBox.alert(config.data.msg, '错误提示', {type:'error'})

        }

        // 判断登入失效的情况，10022（登入状态过期） 1004（token失效了）
        if(config.data.code=="10022" ||config.data.code=="1004"){
            // 退到登录页 然后清掉缓存
            sessionStorage.removeItem("whc-token")
            router.push("/login")
            // 刷新页面 清掉缓存
            location.reload()

            
        }
        

        return Promise.reject(config.data.msg)


    }

    // config是所有请求响应的结果 ，所有请求返回的结果都需要经过这道门
    return config
})

export default http;

